﻿using System;
using System.Collections.Generic;

namespace SharpSqlAnalyzer.nodes.mdx
{
	// Token: 0x020003E1 RID: 993
	public class TMdxFunctionNode : TMdxBaseFunctionNode
	{
		// Token: 0x06002783 RID: 10115 RVA: 0x0033B931 File Offset: 0x00339B31
		public TMdxFunctionNode()
		{
			this.arguments = new List<TMdxExpNode>();
		}

		// Token: 0x06002784 RID: 10116 RVA: 0x0033B944 File Offset: 0x00339B44
		public override void init(object arg1, object arg2, object arg3)
		{
			this.arguments = (List<TMdxExpNode>)arg1;
			this.functionSegment = (IMdxIdentifierSegment)arg2;
			this.expSyntax = (EMdxExpSyntax)arg3;
		}

		// Token: 0x170008DF RID: 2271
		// (get) Token: 0x06002785 RID: 10117 RVA: 0x0033B96A File Offset: 0x00339B6A
		public override string FunctionName
		{
			get
			{
				return this.functionSegment.Name;
			}
		}

		// Token: 0x170008E0 RID: 2272
		// (get) Token: 0x06002786 RID: 10118 RVA: 0x0033B977 File Offset: 0x00339B77
		public override IMdxIdentifierSegment FunctionSegment
		{
			get
			{
				return this.functionSegment;
			}
		}

		// Token: 0x170008E1 RID: 2273
		// (get) Token: 0x06002787 RID: 10119 RVA: 0x0033B97F File Offset: 0x00339B7F
		public override List<TMdxExpNode> Arguments
		{
			get
			{
				return this.arguments;
			}
		}

		// Token: 0x170008E2 RID: 2274
		// (get) Token: 0x06002788 RID: 10120 RVA: 0x0033B987 File Offset: 0x00339B87
		public override EMdxDataType MdxDataType
		{
			get
			{
				return EMdxDataType.Unknown;
			}
		}

		// Token: 0x170008E3 RID: 2275
		// (get) Token: 0x06002789 RID: 10121 RVA: 0x0033B98A File Offset: 0x00339B8A
		public override EMdxExpSyntax ExpSyntax
		{
			get
			{
				return this.expSyntax;
			}
		}

		// Token: 0x0600278A RID: 10122 RVA: 0x0033B992 File Offset: 0x00339B92
		public override void accept(TParseTreeVisitor v)
		{
			v.preVisit(this);
			v.postVisit(this);
		}

		// Token: 0x0600278B RID: 10123 RVA: 0x0033B9A4 File Offset: 0x00339BA4
		public override void acceptChildren(TParseTreeVisitor v)
		{
			v.preVisit(this);
			if (this.arguments != null)
			{
				foreach (TMdxExpNode tmdxExpNode in this.arguments)
				{
					tmdxExpNode.acceptChildren(v);
				}
			}
			v.postVisit(this);
		}

		// Token: 0x04001DCF RID: 7631
		private List<TMdxExpNode> arguments;

		// Token: 0x04001DD0 RID: 7632
		private IMdxIdentifierSegment functionSegment;

		// Token: 0x04001DD1 RID: 7633
		private EMdxExpSyntax expSyntax;
	}
}
